using System;

namespace SmartPeople.Framework.SecuritySpace
{
    /// <summary>
    /// ISecuritySecuredDocument interface
    /// </summary>
    public interface ISecuritySecuredDocument
    {
        /// <summary>
        /// Gets or sets the GID.
        /// </summary>
        /// <value>The GID.</value>
        Guid GID { get; set; }

        /// <summary>
        /// Gets or sets the name.
        /// </summary>
        /// <value>The name.</value>
        string Name { get; set; }

        /// <summary>
        /// Gets or sets the description.
        /// </summary>
        /// <value>The description.</value>
        string Description { get; set; }

        /// <summary>
        /// Gets or sets the type of the secured.
        /// </summary>
        /// <value>The type of the secured.</value>
        ISecuritySecuredType SecuredType { get; set; }


        /// <summary>
        /// Gets or sets the type of the secured.
        /// </summary>
        /// <value>The type of the secured.</value>
        ISecuritySecuredType DefaultChildSecuredType { get; set; }

        /// <summary>
        /// Gets the full name.
        /// </summary>
        /// <value>The full name.</value>
        string FullName { get; }


        /// <summary>
        /// Gets the action ID.
        /// </summary>
        /// <param name="actionName">Name of the action.</param>
        /// <returns></returns>
        Guid GetActionID(string actionName);


        /// <summary>
        /// Gets the state ID.
        /// </summary>
        /// <param name="stateName">Name of the state.</param>
        /// <returns></returns>
        Guid GetStateID(string stateName);
    }
}